package com.ssy.lingxi.order.service.web;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.order.model.vo.basic.request.*;
import com.ssy.lingxi.order.model.vo.basic.response.ReceiveOrderDetailVO;
import com.ssy.lingxi.order.model.vo.basic.response.ReceiveOrderProductQueryVO;
import com.ssy.lingxi.order.model.vo.basic.response.ReceiveOrderQueryVO;
import org.springframework.http.HttpHeaders;

/**
 *  收货单相关接口
 * @author ds
 * @date 2022/3/24
 * @version 2.0.0
 */
public interface IReceiveOrderService {
    /**
     * 分页查询收货单
     * @param headers HttpHeaders信息
     * @param deliveryDateVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<ReceiveOrderQueryVO>> page(HttpHeaders headers, ReceiveOrderPageVO deliveryDateVO);

    /**
     * 分页查询收货单-物料信息
     * @param headers
     * @param pageVO
     * @return
     */
    Wrapper<PageData<ReceiveOrderProductQueryVO>> pageProducts(HttpHeaders headers, ReceiveOrderProductPageVO pageVO);

    /**
     * 创建收货单
     * @param headers
     * @param param
     * @return
     */
    Wrapper<Void> createReceiveOrder(HttpHeaders headers, ReceiveOrderCreateVO param);

    /**
     * 收货单详情
     * @param headers
     * @param request
     * @return
     */
    Wrapper<ReceiveOrderDetailVO> detail(HttpHeaders headers, IdVO request);

    /**
     * 修改进货单
     * @param headers
     * @param request
     * @return
     */
    Wrapper<Void> update(HttpHeaders headers, ReceiveOrderUpdateVO request);

    /**
     * 作废
     * @param headers
     * @param request
     * @return
     */
    Wrapper<Void> invalid(HttpHeaders headers, InvalidVO request);

    /**
     * 供应商查询收货单
     * @param headers
     * @param pageVO
     * @return
     */
    Wrapper<PageData<ReceiveOrderQueryVO>> pageByVendor(HttpHeaders headers, ReceiveOrderPageVO pageVO);
}
